草庐IT

c++ - 实现安全的 nullptr

全部标签

c# - 在引擎盖下使用弱引用实现 C# 事件是个好主意吗?

我一直在想是否值得使用类似以下内容(粗略的概念验证代码)来实现弱事件(在适当的地方):classFoo{privateWeakEvent_explodedEvent=newWeakEvent();publiceventWeakEvent.EventHandlerExploded{add{_explodedEvent+=value;}remove{_explodedEvent-=value;}}privatevoidOnExploded(){_explodedEvent.Invoke(this,EventArgs.Empty);}publicvoidExplode(){OnExplode

c# - 如何在 C# Unity 中使用带有二维数组的 C 结构

所以我有一个具有以下结构的CAPItypedefstructmat4f_{floatm[4][4];}mat4f;它作为参数传递给我的一个API函数:voidmyFunction(constmat4fmatrix);我正在使用dll将此函数导出到Unity中的C#:[DllImport("mylib")]privatestaticexternvoidmyFunction(mat4fmatrix);我的问题是,我应该将相应的C#结构设为什么?现在我有以下内容:[StructLayout(LayoutKind.Sequential)]publicstructmat4f{publicfloa

c# - 安全地停止长时间运行的任务

如何停止长时间运行的任务(.net4)?我已经实现了TPL并尝试使用CancellationTokenSource但它似乎不适用于我的场景。我见过的所有示例都假设您在while循环中工作,以便您可以检查任务是否已被取消,而我只有一个需要很长时间的操作。我不能等待工作完成,因为我需要假设它可能永远不会完成。这是我试过的代码:bool?result=null;varcs=newCancellationTokenSource();varct=cs.Token;vardoWorkTask=newTask(()=>{Console.WriteLine("startdoworktask");res

c# - 我怎样才能实现我自己的外部类型?

在我们的产品中,我们有称为“服务”的东西,它们是产品不同部分之间(尤其是语言之间——内部语言、C、Python和.NET)之间的基本通信方式。目前代码是这样的(Services.Executeutilizingparamsobject[]args):myString=(string)Services.Execute("service_name",arg1,arg2,...);我宁愿能够编写这样的代码并获得类型检查和更简洁代码的好处:myString=ServiceName(arg1,arg2,...);这可以通过一个简单的函数来实现,publicstaticstringServiceN

c# - 为什么 Enumerable.Range 实现 IDisposable?

只是想知道为什么Enumerable.Range工具IDisposable.我明白为什么IEnumerator确实如此,但是IEnumerable不需要它。(我在玩我的.Memoise()实现时发现了这一点,它有类似的语句if(enumerableisIDisposable)((IDisposable)enumerable).Dispose();出于好奇,我在它的“sourcefinished”方法中放置了一个断点,并由测试触发。) 最佳答案 Enumerable.Range在其方法主体中使用yieldreturn。yieldret

c# - C#泛型是如何实现的?

我曾认为C#中的泛型的实现方式是在运行时或编译时生成新的类/方法/你有什么,当使用新的泛型类型时,类似于C++模板(我从未真正研究过,我很可能是错的,对此我很乐意接受更正)。但是在我的编码中我想出了一个确切的反例:staticclassProgram{staticvoidMain(){TesttestVar=newTest();GenericTestgenericTest=newGenericTest();intgen=genericTest.Get(testVar);RegularTestregTest=newRegularTest();intreg=regTest.Get(test

c# - 如何注册两个实现然后在 .Net Core 依赖注入(inject)中获得一个

我的部分代码依赖于同一接口(interface)的多个实现,而其他部分依赖于其中一个实现。我正在注册如下实现:services.AddSingleton();services.AddSingleton();然后在需要时获取两个实现,例如:varimplementations=serviceProvider.GetServices();我的问题是当我需要其中之一时,我正在尝试以下返回null的方法:varfirstImplementation=serviceProvider.GetService();当然我可以使用:varimplementations=serviceProvider.G

c# - 高效 XML 的 .NET 实现

我正在将大型数据库导出为xml格式。需要将此XML数据压缩为尽可能小的格式。我听说过很多有关高效XML(EXI)的信息,想知道是否有.NET实现以便可以从代码中调用它...有没有人有这方面的例子,因为在线资源似乎有点稀少...... 最佳答案 原来微软创建了他们自己的二进制XML格式/编码,称为MC-NBFX(吸引人的嗯)。从.NET3.0开始,这是.NET框架和WCF的一部分。有关详细信息,请参阅:[MC-NBFX]:.NETBinaryFormat:XMLDataStructureWCFBinaryXMLanddictionar

c# - .NET 中的 ECDiffieHellmanCng 是否具有实现 NIST SP 800-56A,第 5.8.1 节的 key 派生函数

我手头有一项任务需要使用NISTSP800-56A第5.8.1节中描述的key派生函数来派生keyMaterial。我不是密码学专家,所以如果问题很幼稚,请原谅。这是我到目前为止所做的:我有对方的公钥和我的私钥现在我尝试使用C#(.NET4)ECDiffieHellmanCng类使用ECDH1.3.132.1.12生成共享key,如下所示://TheGetCngKeymethodreadstheprivatekeyfromacertificateinmyPersonalcertificatestoreCngKeycngPrivateKey=GetCngKey();ECDiffieHel

c# - 如何使用Task Parallel Library(TPL)实现重试逻辑

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Retryataskmultipletimesbasedonuserinputincaseofanexceptionintask我正在寻找一种在TPL中实现重试逻辑的方法。我想要一个通用的函数/类,它能够返回一个任务,该任务将执行给定的操作,并且在出现异常的情况下将重试该任务,直到给定的重试次数为止。我尝试使用ContinueWith并在出现异常时让回调创建一个新任务,但它似乎只适用于固定数量的重试。有什么建议吗?privatestaticvoidMain(){TasktaskWithRetry=Create